package plp.expressions2.util;

import plp.expressions2.expression.ExpBinaria;
import plp.expressions2.expression.ExpEquals;
import plp.expressions2.expression.ExpUnaria;
import plp.expressions2.expression.Id;
import plp.expressions2.expression.Valor;
import plp.expressions2.memory.AmbienteCompilacao;
import plp.expressions2.parser.Token;
import plp.functional1.expression.Aplicacao;
import plp.imperative1.command.Atribuicao;
import plp.imperative1.command.IfThenElse;
import plp.imperative1.command.While;

public interface LinguagemVisitor {

	public void visit(ExpBinaria expBinaria, AmbienteCompilacao ambiente) throws VisitorException;
	
	public void visit(ExpUnaria expUnaria, AmbienteCompilacao ambiente) throws VisitorException;
	
	//public void visit(ExpDeclaracao expDeclaracao, AmbienteCompilacao ambiente) throws VisitorException;
	
	public void visit(Valor valor, AmbienteCompilacao ambiente) throws VisitorException;
	
	public void visit(Id id, AmbienteCompilacao ambiente) throws VisitorException;

	public void visit(Token token);

	public void visit(ExpEquals expEquals);
	
	public void visit(Aplicacao aplicacao, AmbienteCompilacao ambiente) throws VisitorException;
	
	public void visit(IfThenElse ifThenElse,  AmbienteCompilacao ambiente) throws VisitorException;
	
	public void visit(While whileVar, AmbienteCompilacao ambiente) throws VisitorException;
	
	public void visit(Atribuicao atribuicao, AmbienteCompilacao ambiente) throws VisitorException;
}